﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestionaleLib.Controller;
using GestionaleLib;
using Leaf.View.Clienti;
using Leaf.View.Aliquota;
using Leaf.View.Prodotti;
using Leaf.View.Taglie;
using Leaf.View.Magazzino;
using Leaf.View.TipoPagamento;
using Leaf.View.Fornitori;
using Leaf.View.Opzioni;
using Leaf.View.Vendita;
using Leaf.View.TipoDocumento;
using Leaf.View.Vendita;

namespace Leaf
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
            Configurazione();
        }
        private void Configurazione()
        {
            SB.Items[0].Text = "Pronto.";
            pnlWelcome.Visible = Properties.Settings.Default.ApriStartAllAvvio;

            if (Properties.Settings.Default.AttivaAvvisiFumetti)
            {
                VerificaProdottiInSottoScorta();
                VerificaScadenzaDocumenti();
                //inserire quì ulteriori avvisi

            }
        }
        private void smTrovaClienti_Click(object sender, EventArgs e)
        {
            frmElencoClienti frm = new frmElencoClienti();
            frm.MdiParent = this;
            frm.Show();
        }
        private void smAliquota_Click(object sender, EventArgs e)
        {
            frmAliquota frm = new frmAliquota(this,null, FormStatus.StatoForm.Nuovo);
            frm.MdiParent = this;
            frm.Show();
        }
        private void smProdotti_Click(object sender, EventArgs e)
        {
            frmElencoProdotti frm = new frmElencoProdotti();
            frm.MdiParent = this;
            frm.Show();
        }
        private void smTaglia_Click(object sender, EventArgs e)
        {
            frmTaglie frm = new frmTaglie(this,null, FormStatus.StatoForm.Nuovo);
            frm.MdiParent = this;
            frm.Show();
        }
        /// <summary>
        /// Controlla se ci sono prodotti in sotto scorta per lanciare un avviso
        /// </summary>
        private void VerificaProdottiInSottoScorta()
        {
            if (new ctrlProdotti().ProdottiInSottoScorta())
                LanciaFumetto
                    ("Attenzione", "Hai dei prodotti che stanno per finire", ToolTipIcon.Info);
        }

        private void VerificaScadenzaDocumenti()
        {
            int CountDoc;

            ctrlDocumenti VerificaDocumenti = new ctrlDocumenti();
            List<Documento> ScadenzaDocumenti = new List<Documento>();
            ScadenzaDocumenti = VerificaDocumenti.Documenti();

            CountDoc = 0;

            foreach (var item in ScadenzaDocumenti)
            {
                if (item.DataScadenza == DateTime.Now)
                {
                    CountDoc = CountDoc + 1;
                }
            }
            if (CountDoc > 0)
            {
                LanciaFumetto
                    ("Attenzione", "Ci sono " + CountDoc + " documenti che scadono oggi.", ToolTipIcon.Info);
            }
        }
        public void LanciaFumetto(string titolo, string msg, ToolTipIcon TipoIcona)
        {
            NI.ShowBalloonTip
                (Properties.Settings.Default.DurataFumettoAvviso,
                titolo, msg, TipoIcona);
        }
        private void smClientiAggiungi_Click(object sender, EventArgs e)
        {
            frmElencoClienti frmElenco = new frmElencoClienti();
            frmGestisciClienti frm = new frmGestisciClienti(frmElenco, null, FormStatus.StatoForm.Nuovo);
            frm.MdiParent = this;
            frm.Show();
        }
        private void smMovMag_Click(object sender, EventArgs e)
        {
            frmElencoMagazzino frm = new frmElencoMagazzino();
            frm.MdiParent = this;
            frm.Show();
        }
        private void smProdottiDaOrdinare_Click(object sender, EventArgs e)
        {
            frmProdottiSottoScorta frm = new frmProdottiSottoScorta();
            frm.MdiParent = this;
            frm.Show();
        }

        private void smAggiungiProdotti_Click(object sender, EventArgs e)
        {
            frmAggiungiProdotto frm = new frmAggiungiProdotto(this);
            frm.MdiParent = this;
            frm.Show();
        }

        private void smTrovaFornitori_Click(object sender, EventArgs e)
        {
            frmElencoFornitori frm = new frmElencoFornitori();
            frm.MdiParent = this;
            frm.Show();
        }

        private void smTipoPagamento_Click(object sender, EventArgs e)
        {
            frmTipoPagamenti frm = new frmTipoPagamenti(this);
            frm.MdiParent = this;
            frm.Show();
        }

        private void smAggiungiFornitori_Click(object sender, EventArgs e)
        {
            frmElencoFornitori frmElenco = new frmElencoFornitori();
            frmGestisciFornitori frm = new frmGestisciFornitori(frmElenco, null, FormStatus.StatoForm.Nuovo);
            frm.MdiParent = this;
            frm.Show();
        }
        private void smOpzioni_Click(object sender, EventArgs e)
        {
            frmOpzioni frm = new frmOpzioni();
            frm.MdiParent = this;
            frm.Show();
        }

        private void startToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pnlWelcome.Visible = !pnlWelcome.Visible;
        }

        private void lnkProdotti_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            startToolStripMenuItem_Click(null, null);
            smAggiungiProdotti_Click(null, null);
        }

        private void lnkCaricaProdotto_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            startToolStripMenuItem_Click(null, null);
            smMovMag_Click(null, null);
        }

        private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            startToolStripMenuItem_Click(null, null);
            smMovMag_Click(null, null);
        }

        private void lnkChiudi_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            pnlWelcome.Visible = false;
        }

        private void frmMain_MdiChildActivate(object sender, EventArgs e)
        {
            if(pnlWelcome.Visible)
                startToolStripMenuItem_Click(null, null);
        }

        private void smNuovo_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Attenzione il modulo della Vendita al Banco è in fase BETA. Potrebbero essere riscontrati degli errori. Ci scusiamo per il disagio.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            frmVenditaAlBanco frm = new frmVenditaAlBanco();
            frm.MdiParent = this;
            frm.Show();
        }

        private void tipoDocumentiToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmTipoDocumenti frm = new frmTipoDocumenti();
            frm.MdiParent = this;
            frm.Show();
        }

        private void smTrova_Click(object sender, EventArgs e)
        {
            frmElencoVendite frm = new frmElencoVendite();
            frm.MdiParent = this;
            frm.Show();
        }

        private void pulisciDatiToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ctrlDocumenti Documenti = new ctrlDocumenti();
            Documenti.PulisciDatabase();
        }
    }
}
